The present invention relates to tape storage systems, and more specifically, to efficient recovery of the codeword interleave address during decoding operations.
The smallest unit of appending or overwriting data onto magnetic tape when writing data to tape is not interrupted is referred to as a data set (DS). Each DS includes a number of sub data sets (SDS), typically in a range from 32 to 64 SDS in conventional tape technology. A SDS row that consists of 4 byte-interleaved C1 codewords is referred to as a codeword interleave (CWI-4). Each CWI-4 (a SDS row) has an address associated with the CWI-4 that specifies the SDS number within the DS along with the row number within the SDS.
This address is critical for iterative decoding of C1/C2 product codes, and is referred to as a CWI-4 designation (CWID), which is an integral part of a header that is stored with each CWI-4, such as a 12-byte CWI-4 header. However, CWI-4 headers typically have the weakest data integrity in terms of error correction code (ECC) decoding of data for several reasons.
A first reason that CWI-4 headers and CWID have weak data integrity is that protection of CWI-4 headers typically rely either on C1′ encoding, which enhances C1 encoding by adding header fragments to the payload of C1 codewords and modifying C1 parity accordingly, on header interpolation, or both. However, both approaches provide relatively weak protection for the CWI-4 headers when compared to the protection of information by a C1/C2 product code. Another reason that CWI-4 headers have weak data integrity is that CWI-4s are typically written into a synchronous dynamic random access memory (SDRAM) buffer only when the cyclic redundancy check (CRC) stored in a header checks out appropriately (e.g., a DRAM address for the CWI-4 is able to be generated). This is undesirable for iterative decoding because the corresponding SDS row is erased when the CRC stored in a CWI-4 header fails.
Failure to decode a DS (permanent error leading to data loss) due to weak protection of CWI-4 headers is a problem that should be avoided, but known solutions only partially address the problem or have severe drawbacks.